module padding #(
    parameter [63:0] DATA_WIDTH = 600
) (
    input  [DATA_WIDTH-1:0] in_data,
    output [OUTPUT_WIDTH-1:0] padding_data
);

    localparam OUTPUT_WIDTH = (((DATA_WIDTH + 1 + 64) + 511) / 512) * 512;
    localparam ZERO_WIDTH = OUTPUT_WIDTH - DATA_WIDTH - 1 - 64;

    /*

        1. data 后加一个 `1`
        2. 补充 0
        3. 写长度
    
        最终长度需要是 512 的倍数
    */

    assign padding_data = {
        in_data,
        1'b1,
        {ZERO_WIDTH{1'b0}},
        DATA_WIDTH[63:56],
        DATA_WIDTH[55:48],
        DATA_WIDTH[47:40],
        DATA_WIDTH[39:32],
        DATA_WIDTH[31:24],
        DATA_WIDTH[23:16],
        DATA_WIDTH[15:8],
        DATA_WIDTH[7:0]
    };

endmodule